Источники сбоев

Дмитрий Масленников, «Т-Банк»

Общие рассуждения

Есть причины и триггеры

Причина сбоя — любой фактор, на который мы можем повлиять и, если его устранить или снизить его влияние, то сбой станет невозможен, либо последствия станут менее значительными (причина более тяжелых последствий).

Триггер сбоя — непосредственно то событие, которое начало сбой. Триггеры могут быть обыкновенными событиями в жизненном цикле IT-системы, то есть мы бы не хотели их устранять.

Метод «пять почему»

  • Пользователи не могли воспользоваться приложением
  • Потому что оно получило некорректные настройки и сервера
  • Потому что сотрудник, который редактировал настройки в JSON, добавил некорректный продукт
  • Потому что не валидации при редактировании настроек
  • Потому что технолог не поставил такую задачу
  • Потому что «горели сроки»

Критика метода «пять почему»

  1. Заставляет идти на неверную глубину анализа, а именно делать пять шагов анализа
  2. Тот кто анализирует идет по более привычному пути игнорируя менее знакомые области
  3. Результат анализа зависит от того, кто анализирует, разные люди получат разные результаты
  4. Провоцирует находить только одну «корневую» причину сбоя
  5. Не дает никаких подсказок, как искать причины сбоев, кроме как пытаться ответить на вопрос «Почему?»

Диаграмма Исикавы (рыбьи кости)

Критика диаграмм Исикавы

  1. Заставляет идти на неверную глубину анализа, а именно делать пять шагов анализа
  2. Тот кто анализирует идет по более привычному пути игнорируя менее знакомые области
  3. Результат анализа зависит от того, кто анализирует, разные люди получат разные результаты
  4. Провоцирует находить только одну «корневую» причину сбоя
  5. Не дает никаких подсказок, как искать причины сбоев, кроме как пытаться ответить на вопрос «Почему?»

Не являются причинами сбоя

  1. Отказы оборудования
  2. Релизы
  3. Действия пользователей
  4. Сетевые проблемы
  5. Внешние атаки

Все важные причины сбоев — «человеческий фактор»

Необвинительная культура!

Причин всегда много, а триггер — один!

Бороться можно и с причинами и с триггерами

Избегайте все называть «ошибкой»

Не обязательно бороться со всем

  • Стихийные бедствия — наводнения, землетрясения и т.п.
  • Разрушение инфраструктуры — пожары, отключения электроэнергии, обрушения конструкций и т.п.
  • Отказ IT оборудования — только при сознательном решении

Универсальной (правильной) классификации — нет

  • Чужая классификация скорее всего не подойдет и надо делать свою

Триггеры сбоев

  • деплой / релиз
  • отказ оборудования
  • неожиданное поведение пользователей
  • действия злоумышленников
  • переполнение
  • повышение нагрузки от пользователей
  • нарушение контракта (некорректное использование)
  • срабатывание бага
  • отказ или несовместимое изменение в интеграциях
  • действия сотрудников
  • автоматизированное действие
  • форсмажор (землетресения, пожары)

Причины сбоев

Причины сбоев

  1. Ошибка или недоработка в программном коде
  2. Ошибка или недоработка в архитектуре приложения
  3. Ошибка или недоработка в архитектуре системы
  • Код разработан внутри компании
  • Код взят из открытого проекта
  • Код куплен у сторонней компании
  • Технический долг (проблема уже была известна и решение тоже было известно)
  • Проблема была известна, но не знаем, как это решить
  • О проблеме узнали впервые

Причины сбоев

  1. Недоработка в процессах работы
  • Процесс ошибочен
  • Процесс подталкивает сотрудника к ошибке или некорректному поведению
  • Технический долг (проблема уже была известна и решение тоже было известно)
  • Проблема была известна, но не знаем, как это решить
  • О проблеме узнали впервые

Причины сбоев

  1. Ошибка сотрудника при проведении плановых и других работ по обслуживанию систем
  2. Ошибка при использовании сервиса сотрудниками компании
  • Интерфейс провоцирует ошибку
  • Отсутствует защита от некорректных действий

Причины сбоев

  1. Проблема в коммуникации
  • Некорректно поставлена или понята задача
  • Некорректная документация (отсутствует, устарела, с ошибками)
  • Не получено важное уведомление
  • Недостаточное обучение или отсутствие контроля обучения

Причины сбоев

  1. Игнорирование риска при желании достигнуть цели любой ценой
  • Игнорирование риска при давлении от руководства

Причины сбоев

  1. Прямая человеческая проблема — выгорание, депрессия, конфликты и т.п.

Причины сбоев

  1. Не предотвратили умышленное причинение вреда
  • Сотрудниками
  • Третьими лицами
  1. Недокументированное отклонение в работе внешнего сервиса

Альтернативная классификация

Причины сбоя

  • Некачественная архитектура системы
  • Некачественный процесс
  • Ошибки в аналитике и контрактах
  • Некорректные данные
  • Проблема в нашем коде (качество, баги и т.п.)
  • Проблема во внешнем ПО (опенсорс, купленное или сервис)
  • Человеческий фактор (ручные процессы)
  • Нет защиты от ошибок администратора
  • Проблемная коммуникация (документация, постановка и понимание задачи и т.п.)
  • Техдолг (проблемы были известны)
  • Упустили важные вещи (защиту от злоумышленников, подготовку к увеличению нагрузки, не выполнили обязательные требования и т.п.)
  • Не достаточно протестировали
  • Спасибо!

    Вопросы?